package com.qj.yantaishan.domain;

import java.math.BigDecimal;
import java.util.List;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.qj.yantaishan.common.annotation.Excel;
import com.qj.yantaishan.common.core.domain.BaseEntity;

/**
 * 商品库存对象 shanglala_product_sku
 * 
 * @author qihe
 * @date 2022-07-22
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ProductSku
{
    private static final long serialVersionUID = 1L;

    /** 库存id */
    @TableId(type = IdType.AUTO)
    private Integer skuId;

    /** $column.columnComment */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private Integer productId;

    @TableField(exist = false)
    private List<ProductProperty> productPropertyList;

    public List<ProductProperty> getProductPropertyList() {
        return productPropertyList;
    }

    public void setProductPropertyList(List<ProductProperty> productPropertyList) {
        this.productPropertyList = productPropertyList;
    }

    /** 商品属性组合 pid1:vid1;pid2:vid2;pid3:vid3 */
    @Excel(name = "商品属性组合 pid1:vid1;pid2:vid2;pid3:vid3")
    private String properties;

    /** 库存 */
    @Excel(name = "库存")
    private Integer quantity;

    /** 实物批发独立库存 */
    @Excel(name = "实物批发独立库存")
    private Integer wholesaleQuantity;

    /** 价格 */
    @Excel(name = "价格")
    private BigDecimal price;

    /** 供应大厅供货价,商品有规格时使用 */
    @Excel(name = "供应大厅供货价,商品有规格时使用")
    private BigDecimal supplyPrice;

    /** 积分兑换价格 */
    @Excel(name = "积分兑换价格")
    private BigDecimal pointPrice;

    /** 商品本身的成本价 */
    @Excel(name = "商品本身的成本价")
    private BigDecimal primeCostPrice;

    /** 赠送的平台积分，当购选额外积分时，0或空都表示不送积分 */
    @Excel(name = "赠送的平台积分，当购选额外积分时，0或空都表示不送积分")
    private BigDecimal returnPoint;

    /** $column.columnComment */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private BigDecimal weight;

    /** 库存编码 */
    @Excel(name = "库存编码")
    private String code;

    /** 销量 */
    @Excel(name = "销量")
    private Integer sales;

    /** 实物批发独立销量 */
    @Excel(name = "实物批发独立销量")
    private Integer wholesaleSales;

    /** 成本价格 */
    @Excel(name = "成本价格")
    private BigDecimal costPrice;

    /** 分销最低价格 */
    @Excel(name = "分销最低价格")
    private BigDecimal minFxPrice;

    /** 分销最高价格 */
    @Excel(name = "分销最高价格")
    private BigDecimal maxFxPrice;



    /** 批发价格 */
    @Excel(name = "批发价格")
    private BigDecimal wholesalePrice;

    /** 实物批发成本 */
    @Excel(name = "实物批发成本")
    private BigDecimal wholesaleCostPrice;

    /** $column.columnComment */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private BigDecimal saleMinPrice;

    /** 建议最高售价 */
    @Excel(name = "建议最高售价")
    private BigDecimal saleMaxPrice;

    /** 关注后库存价格 */
    @Excel(name = "关注后库存价格")
    private BigDecimal afterSubscribePrice;

    /** 关注后折扣 */
    @Excel(name = "关注后折扣")
    private BigDecimal afterSubscribeDiscount;

    /** 原商品库存id */
    @Excel(name = "原商品库存id")
    private Long wholesaleSkuId;

    /** 兑换积分数 */
    @Excel(name = "兑换积分数")
    private Long pointExchangeNum;

    /** 版本 */
    @Excel(name = "版本")
    private Integer version;

    /** 库存版本，减库存会更新此字段，递增1 */
    @Excel(name = "库存版本，减库存会更新此字段，递增1")
    private Integer stockVersion;

    /** 自动补库存数量 */
    @Excel(name = "自动补库存数量")
    private Integer addStockQuantity;

    /** 配送期数 */
    @Excel(name = "配送期数")
    private Integer deliverPhase;


    /** $column.columnComment */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private Long addTime;

    /** 1未删除，0已经假删除 */
    @Excel(name = "1未删除，0已经假删除")
    private Integer isOn;

    public void setSkuId(Integer skuId) 
    {
        this.skuId = skuId;
    }

    public Integer getSkuId() 
    {
        return skuId;
    }
    public void setProductId(Integer productId) 
    {
        this.productId = productId;
    }

    public Integer getProductId() 
    {
        return productId;
    }
    public void setProperties(String properties) 
    {
        this.properties = properties;
    }

    public String getProperties() 
    {
        return properties;
    }
    public void setQuantity(Integer quantity) 
    {
        this.quantity = quantity;
    }

    public Integer getQuantity() 
    {
        return quantity;
    }
    public void setWholesaleQuantity(Integer wholesaleQuantity) 
    {
        this.wholesaleQuantity = wholesaleQuantity;
    }

    public Integer getWholesaleQuantity() 
    {
        return wholesaleQuantity;
    }
    public void setPrice(BigDecimal price) 
    {
        this.price = price;
    }

    public BigDecimal getPrice() 
    {
        return price;
    }
    public void setSupplyPrice(BigDecimal supplyPrice) 
    {
        this.supplyPrice = supplyPrice;
    }

    public BigDecimal getSupplyPrice() 
    {
        return supplyPrice;
    }
    public void setPointPrice(BigDecimal pointPrice) 
    {
        this.pointPrice = pointPrice;
    }

    public BigDecimal getPointPrice() 
    {
        return pointPrice;
    }
    public void setPrimeCostPrice(BigDecimal primeCostPrice) 
    {
        this.primeCostPrice = primeCostPrice;
    }

    public BigDecimal getPrimeCostPrice() 
    {
        return primeCostPrice;
    }
    public void setReturnPoint(BigDecimal returnPoint) 
    {
        this.returnPoint = returnPoint;
    }

    public BigDecimal getReturnPoint() 
    {
        return returnPoint;
    }
    public void setWeight(BigDecimal weight) 
    {
        this.weight = weight;
    }

    public BigDecimal getWeight() 
    {
        return weight;
    }
    public void setCode(String code) 
    {
        this.code = code;
    }

    public String getCode() 
    {
        return code;
    }
    public void setSales(Integer sales) 
    {
        this.sales = sales;
    }

    public Integer getSales() 
    {
        return sales;
    }
    public void setWholesaleSales(Integer wholesaleSales) 
    {
        this.wholesaleSales = wholesaleSales;
    }

    public Integer getWholesaleSales() 
    {
        return wholesaleSales;
    }
    public void setCostPrice(BigDecimal costPrice) 
    {
        this.costPrice = costPrice;
    }

    public BigDecimal getCostPrice() 
    {
        return costPrice;
    }
    public void setMinFxPrice(BigDecimal minFxPrice) 
    {
        this.minFxPrice = minFxPrice;
    }

    public BigDecimal getMinFxPrice() 
    {
        return minFxPrice;
    }
    public void setMaxFxPrice(BigDecimal maxFxPrice) 
    {
        this.maxFxPrice = maxFxPrice;
    }

    public BigDecimal getMaxFxPrice() 
    {
        return maxFxPrice;
    }

    public void setWholesalePrice(BigDecimal wholesalePrice) 
    {
        this.wholesalePrice = wholesalePrice;
    }

    public BigDecimal getWholesalePrice() 
    {
        return wholesalePrice;
    }
    public void setWholesaleCostPrice(BigDecimal wholesaleCostPrice) 
    {
        this.wholesaleCostPrice = wholesaleCostPrice;
    }

    public BigDecimal getWholesaleCostPrice() 
    {
        return wholesaleCostPrice;
    }
    public void setSaleMinPrice(BigDecimal saleMinPrice) 
    {
        this.saleMinPrice = saleMinPrice;
    }

    public BigDecimal getSaleMinPrice() 
    {
        return saleMinPrice;
    }
    public void setSaleMaxPrice(BigDecimal saleMaxPrice) 
    {
        this.saleMaxPrice = saleMaxPrice;
    }

    public BigDecimal getSaleMaxPrice() 
    {
        return saleMaxPrice;
    }
    public void setAfterSubscribePrice(BigDecimal afterSubscribePrice) 
    {
        this.afterSubscribePrice = afterSubscribePrice;
    }

    public BigDecimal getAfterSubscribePrice() 
    {
        return afterSubscribePrice;
    }
    public void setAfterSubscribeDiscount(BigDecimal afterSubscribeDiscount) 
    {
        this.afterSubscribeDiscount = afterSubscribeDiscount;
    }

    public BigDecimal getAfterSubscribeDiscount() 
    {
        return afterSubscribeDiscount;
    }
    public void setWholesaleSkuId(Long wholesaleSkuId) 
    {
        this.wholesaleSkuId = wholesaleSkuId;
    }

    public Long getWholesaleSkuId() 
    {
        return wholesaleSkuId;
    }
    public void setPointExchangeNum(Long pointExchangeNum) 
    {
        this.pointExchangeNum = pointExchangeNum;
    }

    public Long getPointExchangeNum() 
    {
        return pointExchangeNum;
    }
    public void setVersion(Integer version) 
    {
        this.version = version;
    }

    public Integer getVersion() 
    {
        return version;
    }
    public void setStockVersion(Integer stockVersion) 
    {
        this.stockVersion = stockVersion;
    }

    public Integer getStockVersion() 
    {
        return stockVersion;
    }
    public void setAddStockQuantity(Integer addStockQuantity) 
    {
        this.addStockQuantity = addStockQuantity;
    }

    public Integer getAddStockQuantity() 
    {
        return addStockQuantity;
    }
    public void setDeliverPhase(Integer deliverPhase) 
    {
        this.deliverPhase = deliverPhase;
    }

    public Integer getDeliverPhase() 
    {
        return deliverPhase;
    }


    public Long getAddTime() 
    {
        return addTime;
    }
    public void setIsOn(Integer isOn) 
    {
        this.isOn = isOn;
    }

    public Integer getIsOn() 
    {
        return isOn;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("skuId", getSkuId())
            .append("productId", getProductId())
            .append("properties", getProperties())
            .append("quantity", getQuantity())
            .append("wholesaleQuantity", getWholesaleQuantity())
            .append("price", getPrice())
            .append("supplyPrice", getSupplyPrice())
            .append("pointPrice", getPointPrice())
            .append("primeCostPrice", getPrimeCostPrice())
            .append("returnPoint", getReturnPoint())
            .append("weight", getWeight())
            .append("code", getCode())
            .append("sales", getSales())
            .append("wholesaleSales", getWholesaleSales())
            .append("costPrice", getCostPrice())
            .append("minFxPrice", getMinFxPrice())
            .append("maxFxPrice", getMaxFxPrice())

            .append("wholesalePrice", getWholesalePrice())
            .append("wholesaleCostPrice", getWholesaleCostPrice())
            .append("saleMinPrice", getSaleMinPrice())
            .append("saleMaxPrice", getSaleMaxPrice())
            .append("afterSubscribePrice", getAfterSubscribePrice())
            .append("afterSubscribeDiscount", getAfterSubscribeDiscount())
            .append("wholesaleSkuId", getWholesaleSkuId())
            .append("pointExchangeNum", getPointExchangeNum())
            .append("version", getVersion())
            .append("stockVersion", getStockVersion())
            .append("addStockQuantity", getAddStockQuantity())
            .append("deliverPhase", getDeliverPhase())
            .append("addTime", getAddTime())

            .append("isOn", getIsOn())
            .toString();
    }
}
